import { RuleConfigSeverity, type UserConfig } from '@commitlint/types';

const Configuration: UserConfig = {
  ignores: [(commit) => commit.includes('init')],
  extends: ['@commitlint/config-conventional'],
  rules: {
    'body-leading-blank': [RuleConfigSeverity.Error, 'always'],
    'footer-leading-blank': [RuleConfigSeverity.Warning, 'always'],
    'header-max-length': [RuleConfigSeverity.Error, 'always', 108],
    'subject-empty': [RuleConfigSeverity.Error, 'never'],
    'type-empty': [RuleConfigSeverity.Error, 'never'],
    'type-enum': [
      RuleConfigSeverity.Error,
      'always',
      ['feat', 'fix', 'perf', 'style', 'docs', 'test', 'refactor', 'build', 'ci', 'chore', 'revert', 'types', 'release'],
    ],
  },
  prompt: {
    settings: {},
    messages: {
      skip: '按 Enter 键可以跳过该字段',
      max: '最大字符数',
      min: '最小字符数',
      emptyWarning: '字段不能为空',
      upperLimitWarning: '超出字符限制',
      lowerLimitWarning: '字符小于下限',
    },

    questions: {
      type: {
        description: '选择你要提交的变更类型:',
        enum: {
          feat: {
            description: '这是一个新特征',
            title: '特征',
            emoji: '✨',
          },
          fix: {
            description: '这是一个bug修复',
            title: 'bug修复',
            emoji: '🐛',
          },
          docs: {
            description: '仅文档更改',
            title: '文档',
            emoji: '📚',
          },
          style: {
            description: '代码风格更改(格式化、缺少分号等)',
            title: '风格',
            emoji: '💎',
          },
          refactor: {
            description: '代码重构',
            title: '重构',
            emoji: '📦',
          },
          perf: {
            description: '提高性能的改动',
            title: '性能',
            emoji: '🚀',
          },
          types: {
            description: '类型相关更改',
            title: '类型',
            emoji: '✨',
          },
          release: {
            description: '发布新版本',
            title: '发布',
            emoji: '✨',
          },
          test: {
            description: '添加测试或者修改现有测试',
            title: '测试',
            emoji: '🚨',
          },
          build: {
            description: '构造工具的或者外部依赖的改动，例如webpack，npm',
            title: '依赖',
            emoji: '🛠',
          },
          ci: {
            description: '更改CI配置文件和脚本',
            title: 'ci',
            emoji: '⚙️',
          },
          chore: {
            description: '不修改src或者test的其余修改，例如构建过程或辅助工具的变动',
            title: 'Chores',
            emoji: '♻️',
          },
          revert: {
            description: '恢复之前的提交',
            title: '还原',
            emoji: '🗑',
          },
        },
      },
      scope: {
        description: '这个更改的范围是什么(例如组件或文件名)',
      },
      subject: {
        description: '写一个简短的，修改的变化描述',
      },
      body: {
        description: '提供更长的变更描述',
      },
      isBreaking: {
        description: '有什么突破性的变化吗?',
      },
      breakingBody: {
        description: '一个破坏性变更提交需要一个主体。请输入更长的提交描述。',
      },
      breaking: {
        description: '描述突破性的变化',
      },
      isIssueAffected: {
        description: '这一变化是否会影响任何悬而未决的问题?',
      },
      issuesBody: {
        description: '如果问题已关闭，则提交需要一个主体。请输入更长的提交描述',
      },
      issues: {
        description: '添加问题引用(例如:“fix #123”，“re #123”。)',
      },
    },
  },
};

export default Configuration;
